/**
 * <copyright>
 * </copyright>
 *

 */
package ms.unicorn.language.languagedef;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.eclipse.emf.common.util.Enumerator;

/**
 * <!-- begin-user-doc -->
 * A representation of the literals of the enumeration '<em><b>Parameter Type</b></em>',
 * and utility methods for working with them.
 * <!-- end-user-doc -->
 * @see ms.unicorn.language.languagedef.LanguagedefPackage#getParameterType()
 * @model
 * @generated
 */
public enum ParameterType implements Enumerator
{
  /**
   * The '<em><b>VISIBLE</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #VISIBLE_VALUE
   * @generated
   * @ordered
   */
  VISIBLE(0, "VISIBLE", "visile"),

  /**
   * The '<em><b>EDITABLE</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #EDITABLE_VALUE
   * @generated
   * @ordered
   */
  EDITABLE(1, "EDITABLE", "editable"),

  /**
   * The '<em><b>MULTILINE</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #MULTILINE_VALUE
   * @generated
   * @ordered
   */
  MULTILINE(2, "MULTILINE", "multiline"),

  /**
   * The '<em><b>DESCRIPTION</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #DESCRIPTION_VALUE
   * @generated
   * @ordered
   */
  DESCRIPTION(3, "DESCRIPTION", "description"),

  /**
   * The '<em><b>CATEGORY</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #CATEGORY_VALUE
   * @generated
   * @ordered
   */
  CATEGORY(4, "CATEGORY", "category"),

  /**
   * The '<em><b>TEXT</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #TEXT_VALUE
   * @generated
   * @ordered
   */
  TEXT(5, "TEXT", "text"),

  /**
   * The '<em><b>NOTIFY</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #NOTIFY_VALUE
   * @generated
   * @ordered
   */
  NOTIFY(6, "NOTIFY", "notify"),

  /**
   * The '<em><b>MIN</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #MIN_VALUE
   * @generated
   * @ordered
   */
  MIN(7, "MIN", "min"),

  /**
   * The '<em><b>MAX</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #MAX_VALUE
   * @generated
   * @ordered
   */
  MAX(8, "MAX", "max"),

  /**
   * The '<em><b>PRIMARY</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #PRIMARY_VALUE
   * @generated
   * @ordered
   */
  PRIMARY(0, "PRIMARY", "primary"),

  /**
   * The '<em><b>RESIZABLE</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #RESIZABLE_VALUE
   * @generated
   * @ordered
   */
  RESIZABLE(0, "RESIZABLE", "resizable"),

  /**
   * The '<em><b>DOCK</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #DOCK_VALUE
   * @generated
   * @ordered
   */
  DOCK(0, "DOCK", "dock"),

  /**
   * The '<em><b>ANCHOR</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #ANCHOR_VALUE
   * @generated
   * @ordered
   */
  ANCHOR(0, "ANCHOR", "anchor"),

  /**
   * The '<em><b>LOCATION</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #LOCATION_VALUE
   * @generated
   * @ordered
   */
  LOCATION(0, "LOCATION", "location"),

  /**
   * The '<em><b>SIZE</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #SIZE_VALUE
   * @generated
   * @ordered
   */
  SIZE(0, "SIZE", "size"),

  /**
   * The '<em><b>MARGIN</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #MARGIN_VALUE
   * @generated
   * @ordered
   */
  MARGIN(1, "MARGIN", "margin"),

  /**
   * The '<em><b>POSITION</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #POSITION_VALUE
   * @generated
   * @ordered
   */
  POSITION(2, "POSITION", "position"),

  /**
   * The '<em><b>BOUND</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #BOUND_VALUE
   * @generated
   * @ordered
   */
  BOUND(3, "BOUND", "bound"),

  /**
   * The '<em><b>LOCATOR</b></em>' literal object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #LOCATOR_VALUE
   * @generated
   * @ordered
   */
  LOCATOR(0, "LOCATOR", "locator");

  /**
   * The '<em><b>VISIBLE</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>VISIBLE</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #VISIBLE
   * @model literal="visile"
   * @generated
   * @ordered
   */
  public static final int VISIBLE_VALUE = 0;

  /**
   * The '<em><b>EDITABLE</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>EDITABLE</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #EDITABLE
   * @model literal="editable"
   * @generated
   * @ordered
   */
  public static final int EDITABLE_VALUE = 1;

  /**
   * The '<em><b>MULTILINE</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>MULTILINE</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #MULTILINE
   * @model literal="multiline"
   * @generated
   * @ordered
   */
  public static final int MULTILINE_VALUE = 2;

  /**
   * The '<em><b>DESCRIPTION</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>DESCRIPTION</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #DESCRIPTION
   * @model literal="description"
   * @generated
   * @ordered
   */
  public static final int DESCRIPTION_VALUE = 3;

  /**
   * The '<em><b>CATEGORY</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>CATEGORY</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #CATEGORY
   * @model literal="category"
   * @generated
   * @ordered
   */
  public static final int CATEGORY_VALUE = 4;

  /**
   * The '<em><b>TEXT</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>TEXT</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #TEXT
   * @model literal="text"
   * @generated
   * @ordered
   */
  public static final int TEXT_VALUE = 5;

  /**
   * The '<em><b>NOTIFY</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>NOTIFY</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #NOTIFY
   * @model literal="notify"
   * @generated
   * @ordered
   */
  public static final int NOTIFY_VALUE = 6;

  /**
   * The '<em><b>MIN</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>MIN</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #MIN
   * @model literal="min"
   * @generated
   * @ordered
   */
  public static final int MIN_VALUE = 7;

  /**
   * The '<em><b>MAX</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>MAX</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #MAX
   * @model literal="max"
   * @generated
   * @ordered
   */
  public static final int MAX_VALUE = 8;

  /**
   * The '<em><b>PRIMARY</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>PRIMARY</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #PRIMARY
   * @model literal="primary"
   * @generated
   * @ordered
   */
  public static final int PRIMARY_VALUE = 0;

  /**
   * The '<em><b>RESIZABLE</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>RESIZABLE</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #RESIZABLE
   * @model literal="resizable"
   * @generated
   * @ordered
   */
  public static final int RESIZABLE_VALUE = 0;

  /**
   * The '<em><b>DOCK</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>DOCK</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #DOCK
   * @model literal="dock"
   * @generated
   * @ordered
   */
  public static final int DOCK_VALUE = 0;

  /**
   * The '<em><b>ANCHOR</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>ANCHOR</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #ANCHOR
   * @model literal="anchor"
   * @generated
   * @ordered
   */
  public static final int ANCHOR_VALUE = 0;

  /**
   * The '<em><b>LOCATION</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>LOCATION</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #LOCATION
   * @model literal="location"
   * @generated
   * @ordered
   */
  public static final int LOCATION_VALUE = 0;

  /**
   * The '<em><b>SIZE</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>SIZE</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #SIZE
   * @model literal="size"
   * @generated
   * @ordered
   */
  public static final int SIZE_VALUE = 0;

  /**
   * The '<em><b>MARGIN</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>MARGIN</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #MARGIN
   * @model literal="margin"
   * @generated
   * @ordered
   */
  public static final int MARGIN_VALUE = 1;

  /**
   * The '<em><b>POSITION</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>POSITION</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #POSITION
   * @model literal="position"
   * @generated
   * @ordered
   */
  public static final int POSITION_VALUE = 2;

  /**
   * The '<em><b>BOUND</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>BOUND</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #BOUND
   * @model literal="bound"
   * @generated
   * @ordered
   */
  public static final int BOUND_VALUE = 3;

  /**
   * The '<em><b>LOCATOR</b></em>' literal value.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of '<em><b>LOCATOR</b></em>' literal object isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @see #LOCATOR
   * @model literal="locator"
   * @generated
   * @ordered
   */
  public static final int LOCATOR_VALUE = 0;

  /**
   * An array of all the '<em><b>Parameter Type</b></em>' enumerators.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static final ParameterType[] VALUES_ARRAY =
    new ParameterType[]
    {
      VISIBLE,
      EDITABLE,
      MULTILINE,
      DESCRIPTION,
      CATEGORY,
      TEXT,
      NOTIFY,
      MIN,
      MAX,
      PRIMARY,
      RESIZABLE,
      DOCK,
      ANCHOR,
      LOCATION,
      SIZE,
      MARGIN,
      POSITION,
      BOUND,
      LOCATOR,
    };

  /**
   * A public read-only list of all the '<em><b>Parameter Type</b></em>' enumerators.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public static final List<ParameterType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));

  /**
   * Returns the '<em><b>Parameter Type</b></em>' literal with the specified literal value.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public static ParameterType get(String literal)
  {
    for (int i = 0; i < VALUES_ARRAY.length; ++i)
    {
      ParameterType result = VALUES_ARRAY[i];
      if (result.toString().equals(literal))
      {
        return result;
      }
    }
    return null;
  }

  /**
   * Returns the '<em><b>Parameter Type</b></em>' literal with the specified name.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public static ParameterType getByName(String name)
  {
    for (int i = 0; i < VALUES_ARRAY.length; ++i)
    {
      ParameterType result = VALUES_ARRAY[i];
      if (result.getName().equals(name))
      {
        return result;
      }
    }
    return null;
  }

  /**
   * Returns the '<em><b>Parameter Type</b></em>' literal with the specified integer value.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public static ParameterType get(int value)
  {
    switch (value)
    {
      case VISIBLE_VALUE: return VISIBLE;
      case EDITABLE_VALUE: return EDITABLE;
      case MULTILINE_VALUE: return MULTILINE;
      case DESCRIPTION_VALUE: return DESCRIPTION;
      case CATEGORY_VALUE: return CATEGORY;
      case TEXT_VALUE: return TEXT;
      case NOTIFY_VALUE: return NOTIFY;
      case MIN_VALUE: return MIN;
      case MAX_VALUE: return MAX;
    }
    return null;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private final int value;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private final String name;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private final String literal;

  /**
   * Only this class can construct instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private ParameterType(int value, String name, String literal)
  {
    this.value = value;
    this.name = name;
    this.literal = literal;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getValue()
  {
    return value;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public String getName()
  {
    return name;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public String getLiteral()
  {
    return literal;
  }

  /**
   * Returns the literal value of the enumerator, which is its string representation.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public String toString()
  {
    return literal;
  }
  
} //ParameterType
